import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace InfraVectorCollectionApi {
  /** 向量库集合管理信息 */
  export interface VectorCollection {
    id: number; // 向量数据库集合id
    vectorDbId?: number; // 向量数据库实例ID
    name?: string; // 集合名称
    categoryId?: number; // 分类ID
    knowledgeType: string; // 知识类型（text/structured/image，对应存入的知识形式）
    vectorDim?: number; // 向量维度（如 768/1536，需与 Embedding 模型输出一致）
    metricType: string; // 距离度量方式（L2/IP/COSINE）
    description: string; // 集合描述
    status?: string; // 集合状态（normal/creating/deleted/error）
    recordCount: number; // 向量记录数（定期同步自数据库，默认 0）
    hotLevel: string; // 热度等级（hot/warm/cold，用于资源分配）
    updateStrategy: string; // 更新策略（dynamic：高频更新；stable：低频更新，用于索引优化）
    metadata: string; // 其他参数
    embeddingModelId: number; // 向量模型编号
    embeddingModel: string; // 向量模型标识
  }
}

/** 查询向量库集合管理分页 */
export function getVectorCollectionPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<InfraVectorCollectionApi.VectorCollection>
  >('/infra/vector-collection/page', data, { desensitize, encrypt });
}

/** 查询向量库集合管理详情 */
export function getVectorCollection(id: number) {
  return requestClient.get<InfraVectorCollectionApi.VectorCollection>(
    `/infra/vector-collection/get?id=${id}`,
  );
}

/** 新增向量库集合管理 */
export function createVectorCollection(
  data: InfraVectorCollectionApi.VectorCollection,
) {
  return requestClient.post('/infra/vector-collection/create', data);
}

/** 修改向量库集合管理 */
export function updateVectorCollection(
  data: InfraVectorCollectionApi.VectorCollection,
) {
  return requestClient.put('/infra/vector-collection/update', data);
}

/** 删除向量库集合管理 */
export function deleteVectorCollection(id: number) {
  return requestClient.delete(`/infra/vector-collection/delete?id=${id}`);
}

/** 批量删除向量库集合管理 */
export function deleteVectorCollectionList(ids: number[]) {
  return requestClient.delete(
    `/infra/vector-collection/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出向量库集合管理 */
export function exportVectorCollection(params: any) {
  return requestClient.download('/infra/vector-collection/export-excel', {
    params,
  });
}
